From 65fd2ed9b7b495db84796e914cf1dc09ad8f0939 Mon Sep 17 00:00:00 2001 From: Nathan Braswell Date: Sat, 16 May 2015 12:05:23 -0400 Subject: [PATCH] Changed from typedef to obj and def --- krakenGrammer.kgm | 11 ++++++++-- src/Importer.cpp | 3 ++- stdlib/string.krak | 2 +- stdlib/trivial_container.krak | 2 +- stdlib/vector.krak | 6 +++--- tests/sameNameOne.krak | 2 +- tests/sameNameTwo.krak | 2 +- tests/scopeQualified.krak | 4 ++-- tests/scopeUnqualified.krak | 4 ++-- tests/test_OperatorOverloadTest.krak | 2 +- tests/test_declarationsTest.krak | 2 +- tests/test_functionOperator.krak | 2 +- tests/test_memTest.krak | 2 +- tests/test_moreComplexObjectTest.krak | 4 ++-- tests/test_moreObjectTemplateTest.krak | 4 ++-- tests/test_newSyntaxTemplate.krak | 2 +- tests/test_objectOrderingTest.krak | 6 +++--- tests/test_sameName.krak | 2 +- ...test_simpleObjectMultipleTemplateTest.krak | 2 +- tests/test_simpleObjectTemplateTest.krak | 2 +- tests/test_simpleObjectTest.krak | 2 +- tests/test_templateFuncInfr.krak | 2 +- tests/test_templateTest.krak | 4 ++-- tests/test_traitsTest.krak | 20 +++++++++---------- tests/test_typeExpr.krak | 2 +- tests/test_typeInfr.krak | 4 ++-- tests/test_vectorTest.krak | 2 +- 27 files changed, 55 insertions(+), 47 deletions(-) diff --git a/krakenGrammer.kgm b/krakenGrammer.kgm index c1f4e03..27b02f0 100644 --- a/krakenGrammer.kgm +++ b/krakenGrammer.kgm @@ -52,7 +52,8 @@ triple_quoted_string = "\"\"\"((\"\"(`|1|2|3|4|5|6|7|8|9|0|-|=| |q|w|e|r|t|y|u|i |z|x|c|v|b|n|m|,|.|/|~|!|@|#|$|%|^|&|\*|\(|\)|_|\+|Q|W|E|R|T|Y|U|I|O|P|{|}|\||A|S|D|F|G|H|J|K|L|:|Z|X|C|V|B|N|M|<|>|\?| )+\"\")|((`|1|2|3|4|5|6|7|8|9|0|-|=| |q|w|e|r|t|y|u|i|o|p|[|]|\\|a|s|d|f|g|h|j|k|l|;|'| |z|x|c|v|b|n|m|,|.|/|~|!|@|#|$|%|^|&|\*|\(|\)|_|\+|Q|W|E|R|T|Y|U|I|O|P|{|}|\||A|S|D|F|G|H|J|K|L|:|Z|X|C|V|B|N|M|<|>|\?| )+))*\"\"\"" ; -identifier = alpha_alphanumeric ; +#identifier = alpha_alphanumeric ; +identifier = augmented_alpha_alphanumeric ; scope_op = ":" ":" ; scoped_identifier = scoped_identifier WS scope_op WS identifier | identifier ; @@ -70,7 +71,9 @@ opt_parameter_list = parameter_list | ; parameter_list = parameter_list WS "," WS parameter | parameter ; parameter = boolean_expression ; -type_def = "typedef" WS identifier WS type | "typedef" WS identifier WS template_dec WS "{" WS declaration_block WS "}" | "typedef" WS identifier WS "{" WS declaration_block WS "}" | "typedef" WS identifier WS template_dec WS traits WS "{" WS declaration_block WS "}" | "typedef" WS identifier WS traits WS "{" WS declaration_block WS "}" ; +def_nonterm = "def" ; +obj_nonterm = "obj" ; +type_def = def_nonterm WS identifier WS type | obj_nonterm WS identifier WS template_dec WS "{" WS declaration_block WS "}" | obj_nonterm WS identifier WS "{" WS declaration_block WS "}" | obj_nonterm WS identifier WS template_dec WS traits WS "{" WS declaration_block WS "}" | obj_nonterm WS identifier WS traits WS "{" WS declaration_block WS "}" ; declaration_block = declaration_statement line_end WS declaration_block | function WS declaration_block | declaration_statement line_end | function | ; traits = "\(" WS trait_list WS "\)" ; @@ -115,7 +118,11 @@ floating_literal = numeric "." numeric ; bool = "true" | "false" ; character = "'(`|1|2|3|4|5|6|7|8|9|0|-|=| |q|w|e|r|t|y|u|i|o|p|[|]|\\|a|s|d|f|g|h|j|k|l|;|'| |z|x|c|v|b|n|m|,|.|/|~|!|@|#|$|%|^|&|\*|\(|\)|_|\+|Q|W|E|R|T|Y|U|I|O|P|{|}|\||A|S|D|F|G|H|J|K|L|:|\"|Z|X|C|V|B|N|M|<|>|\?| )'" ; + +keywords_also_identifiers = "obj" | "def" ; alpha_alphanumeric = "(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|_)(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|_|0|1|2|3|4|5|6|7|8|9)*" ; +augmented_alpha_alphanumeric = alpha_alphanumeric augmented_alpha_alphanumeric | keywords_also_identifiers augmented_alpha_alphanumeric | alpha_alphanumeric | keywords_also_identifiers ; + numeric = "(0|1|2|3|4|5|6|7|8|9)+" ; string = triple_quoted_string | "\"(`|1|2|3|4|5|6|7|8|9|0|-|=| |q|w|e|r|t|y|u|i|o|p|[|]|\\|a|s|d|f|g|h|j|k|l|;|'| |z|x|c|v|b|n|m|,|.|/|~|!|@|#|$|%|^|&|\*|\(|\)|_|\+|Q|W|E|R|T|Y|U|I|O|P|{|}|\||A|S|D|F|G|H|J|K|L|:|Z|X|C|V|B|N|M|<|>|\?| )*\"" ; diff --git a/src/Importer.cpp b/src/Importer.cpp index bd587e0..e498132 100644 --- a/src/Importer.cpp +++ b/src/Importer.cpp @@ -35,7 +35,8 @@ Importer::Importer(Parser* parserIn, std::vector includePaths, std: removeSymbols.push_back(Symbol("__if_comp__", true)); removeSymbols.push_back(Symbol("simple_passthrough", true)); removeSymbols.push_back(Symbol("comp_simple_passthrough", true)); - removeSymbols.push_back(Symbol("typedef", true)); + removeSymbols.push_back(Symbol("def_nonterm", false)); + removeSymbols.push_back(Symbol("obj_nonterm", false)); removeSymbols.push_back(Symbol("template", true)); removeSymbols.push_back(Symbol("\\|", true)); //collapseSymbols.push_back(Symbol("scoped_identifier", false)); diff --git a/stdlib/string.krak b/stdlib/string.krak index f9bef1e..1db0a2c 100644 --- a/stdlib/string.krak +++ b/stdlib/string.krak @@ -1,7 +1,7 @@ import vector; import mem; -typedef string (Destructable) { +obj string (Destructable) { var data: vector::vector; fun construct(): string* { data.construct(); diff --git a/stdlib/trivial_container.krak b/stdlib/trivial_container.krak index 9d87def..c2be90c 100644 --- a/stdlib/trivial_container.krak +++ b/stdlib/trivial_container.krak @@ -1,6 +1,6 @@ import io; -typedef trivialContainer { +obj trivialContainer { var data: T; fun print(): void { io::print(data); diff --git a/stdlib/vector.krak b/stdlib/vector.krak index faec699..2d09690 100644 --- a/stdlib/vector.krak +++ b/stdlib/vector.krak @@ -2,7 +2,7 @@ import mem:*; import util:*; import io:*; -typedef vector (Destructable) { +obj vector (Destructable) { var data: T*; var size: int; var available: int; @@ -13,7 +13,7 @@ typedef vector (Destructable) { data = new(8); return this; } - + fun construct(newSize: int): vector*{ size = newSize; available = newSize; @@ -48,7 +48,7 @@ typedef vector (Destructable) { print("Vector tried to access element: "); println(index); print("Max Index of vector: "); - println(size-1); + println(size-1); return data[0]; } return data[index]; diff --git a/tests/sameNameOne.krak b/tests/sameNameOne.krak index e32e838..0fe8e06 100644 --- a/tests/sameNameOne.krak +++ b/tests/sameNameOne.krak @@ -1,7 +1,7 @@ var sameVar: int; fun sameFun(): int { return 5; } -typedef classTester { +obj classTester { fun method(): int { return 8; } } diff --git a/tests/sameNameTwo.krak b/tests/sameNameTwo.krak index 50e7172..43a0435 100644 --- a/tests/sameNameTwo.krak +++ b/tests/sameNameTwo.krak @@ -1,6 +1,6 @@ var sameVar: int; fun sameFun(): int { return 6; } -typedef classTester { +obj classTester { fun method(): int { return 9; } } diff --git a/tests/scopeQualified.krak b/tests/scopeQualified.krak index dd94944..2b9a2c8 100644 --- a/tests/scopeQualified.krak +++ b/tests/scopeQualified.krak @@ -1,7 +1,7 @@ var qualified_variable: int = 7; fun qualified_func(): int { return 9; } -typedef qualified_class { +obj qualified_class { var number: int; fun construct(num: int): qualified_class* { number = num; @@ -12,7 +12,7 @@ typedef qualified_class { } }; -typedef qualified_container { +obj qualified_container { var data: T; fun construct(dataIn: T): qualified_container* { data = dataIn; diff --git a/tests/scopeUnqualified.krak b/tests/scopeUnqualified.krak index e35da56..ef38b1c 100644 --- a/tests/scopeUnqualified.krak +++ b/tests/scopeUnqualified.krak @@ -1,7 +1,7 @@ var unqualifed_variable: int = 8; fun unqualified_func(): int { return 10; } -typedef unqualified_class { +obj unqualified_class { var number: int; fun construct(num: int): unqualified_class* { number = num; @@ -12,7 +12,7 @@ typedef unqualified_class { } }; -typedef unqualified_container { +obj unqualified_container { var data: T; fun construct(dataIn: T): unqualified_container* { data = dataIn; diff --git a/tests/test_OperatorOverloadTest.krak b/tests/test_OperatorOverloadTest.krak index 81683b4..d3c5e71 100644 --- a/tests/test_OperatorOverloadTest.krak +++ b/tests/test_OperatorOverloadTest.krak @@ -1,6 +1,6 @@ import io:*; -typedef Vec2 { +obj Vec2 { var x: int; var y: int; diff --git a/tests/test_declarationsTest.krak b/tests/test_declarationsTest.krak index e635560..b423fc1 100644 --- a/tests/test_declarationsTest.krak +++ b/tests/test_declarationsTest.krak @@ -1,7 +1,7 @@ import io:*; import mem:*; -typedef ClassWithConstructor { +obj ClassWithConstructor { var data: int; fun construct(inData: int): ClassWithConstructor* { data = inData; diff --git a/tests/test_functionOperator.krak b/tests/test_functionOperator.krak index 8951a96..7f14989 100644 --- a/tests/test_functionOperator.krak +++ b/tests/test_functionOperator.krak @@ -1,6 +1,6 @@ import io:* -typedef FuncObj { +obj FuncObj { fun operator()(a:int, b:char*): void { println(a) println(b) diff --git a/tests/test_memTest.krak b/tests/test_memTest.krak index 5a49ffe..a9e9630 100644 --- a/tests/test_memTest.krak +++ b/tests/test_memTest.krak @@ -1,7 +1,7 @@ import mem:*; import io:*; -typedef AnObject { +obj AnObject { var a: int; var b: int; var c: char*; diff --git a/tests/test_moreComplexObjectTest.krak b/tests/test_moreComplexObjectTest.krak index 07999a3..71fd39b 100644 --- a/tests/test_moreComplexObjectTest.krak +++ b/tests/test_moreComplexObjectTest.krak @@ -1,6 +1,6 @@ import io:*; -typedef firstObject { +obj firstObject { var objectNum: int; var other: int; fun print(): void { @@ -11,7 +11,7 @@ typedef firstObject { } }; -typedef Int int; +def Int int; var aliasNum: Int; diff --git a/tests/test_moreObjectTemplateTest.krak b/tests/test_moreObjectTemplateTest.krak index f7a47f8..24d93a9 100644 --- a/tests/test_moreObjectTemplateTest.krak +++ b/tests/test_moreObjectTemplateTest.krak @@ -1,7 +1,7 @@ import io:*; import trivial_container:*; -typedef RegularObject { +obj RegularObject { var num: int; var innerContainer: trivialContainer; fun set(message: char*, number: int): void { @@ -17,7 +17,7 @@ typedef RegularObject { } }; -typedef MyIntContainer trivialContainer; +def MyIntContainer trivialContainer; var roundabout: MyIntContainer; var outsideDec: RegularObject; diff --git a/tests/test_newSyntaxTemplate.krak b/tests/test_newSyntaxTemplate.krak index d31ff99..64b5159 100644 --- a/tests/test_newSyntaxTemplate.krak +++ b/tests/test_newSyntaxTemplate.krak @@ -1,6 +1,6 @@ -typedef Swapper { +obj Swapper { fun doit(a: T*, b: T*) : void { var temp: T = *a; *a = *b; diff --git a/tests/test_objectOrderingTest.krak b/tests/test_objectOrderingTest.krak index bc2d74b..80f66ba 100644 --- a/tests/test_objectOrderingTest.krak +++ b/tests/test_objectOrderingTest.krak @@ -1,10 +1,10 @@ import io:*; -typedef objectA { +obj objectA { var a: int; }; -typedef BigObject { +obj BigObject { var a: objectA; var b: objectB; fun add(): int { @@ -12,7 +12,7 @@ typedef BigObject { } }; -typedef objectB { +obj objectB { var b: int; }; diff --git a/tests/test_sameName.krak b/tests/test_sameName.krak index c5b9ed1..d4e52c9 100644 --- a/tests/test_sameName.krak +++ b/tests/test_sameName.krak @@ -5,7 +5,7 @@ import sameNameTwo var sameVar: int; fun sameFun(): int { return 4; } -typedef classTester { +obj classTester { fun method(): int { return 7 } diff --git a/tests/test_simpleObjectMultipleTemplateTest.krak b/tests/test_simpleObjectMultipleTemplateTest.krak index 3d55db3..e9d476e 100644 --- a/tests/test_simpleObjectMultipleTemplateTest.krak +++ b/tests/test_simpleObjectMultipleTemplateTest.krak @@ -1,7 +1,7 @@ import io; -typedef TemplateTest { +obj TemplateTest { var a: T; var b: J; fun print(): void { diff --git a/tests/test_simpleObjectTemplateTest.krak b/tests/test_simpleObjectTemplateTest.krak index b84f9b0..7927eef 100644 --- a/tests/test_simpleObjectTemplateTest.krak +++ b/tests/test_simpleObjectTemplateTest.krak @@ -1,7 +1,7 @@ import io; -typedef TemplateTest { +obj TemplateTest { var a: int; var b: T; fun print(): void { diff --git a/tests/test_simpleObjectTest.krak b/tests/test_simpleObjectTest.krak index e44f061..385618b 100644 --- a/tests/test_simpleObjectTest.krak +++ b/tests/test_simpleObjectTest.krak @@ -1,6 +1,6 @@ import io; -typedef FirstObject { +obj FirstObject { var objectNum: int; fun PrintSelf(a: int): void { io::print(objectNum); diff --git a/tests/test_templateFuncInfr.krak b/tests/test_templateFuncInfr.krak index fcd56cf..dbfc0e9 100644 --- a/tests/test_templateFuncInfr.krak +++ b/tests/test_templateFuncInfr.krak @@ -2,7 +2,7 @@ import io:* import mem:* import vector:* -typedef pair { +obj pair { var first: T var second: U } diff --git a/tests/test_templateTest.krak b/tests/test_templateTest.krak index 24c3d97..d16d6fa 100644 --- a/tests/test_templateTest.krak +++ b/tests/test_templateTest.krak @@ -1,7 +1,7 @@ import io:*; import trivial_container:*; -typedef TemplateTest { +obj TemplateTest { var a: int; var b: T; var c: trivialContainer; @@ -17,7 +17,7 @@ typedef TemplateTest { } }; -typedef MyInt int; +def MyInt int; var c: MyInt; diff --git a/tests/test_traitsTest.krak b/tests/test_traitsTest.krak index d586ff8..37cc431 100644 --- a/tests/test_traitsTest.krak +++ b/tests/test_traitsTest.krak @@ -1,11 +1,11 @@ import io:*; -typedef NoTraits {}; +obj NoTraits {}; -typedef Trait1 (FirstTrait) {}; -typedef Trait2 (SecondTrait) {}; -typedef TwoTrait (FirstTrait, SecondTrait) {}; -typedef AlreadySpecilized (FirstTrait, SecondTrait) {}; +obj Trait1 (FirstTrait) {}; +obj Trait2 (SecondTrait) {}; +obj TwoTrait (FirstTrait, SecondTrait) {}; +obj AlreadySpecilized (FirstTrait, SecondTrait) {}; fun OneTwoFunc(obj: T): void { println("No Traits"); @@ -30,12 +30,12 @@ template |void| OneTwoFunc(|AlreadySpecilized| obj) { //This should work for objects too! //To test, we cycle the mapping of traits -typedef OneTwoObj (FirstTrait) {}; -typedef OneTwoObj (SecondTrait) {}; -typedef OneTwoObj (FirstTrait, SecondTrait) {}; -typedef OneTwoObj {}; +obj OneTwoObj (FirstTrait) {}; +obj OneTwoObj (SecondTrait) {}; +obj OneTwoObj (FirstTrait, SecondTrait) {}; +obj OneTwoObj {}; /* - *typedef template OneTwoObj { + *obj template OneTwoObj { * void proveSpecilized() { * println("I'm specilized!"); * } diff --git a/tests/test_typeExpr.krak b/tests/test_typeExpr.krak index fce2d2d..80bc339 100644 --- a/tests/test_typeExpr.krak +++ b/tests/test_typeExpr.krak @@ -1,6 +1,6 @@ import io; -typedef ClassWithConstructor { +obj ClassWithConstructor { var data: int; fun construct(inData: int): ClassWithConstructor* { data = inData; diff --git a/tests/test_typeInfr.krak b/tests/test_typeInfr.krak index e0be334..bd4353e 100644 --- a/tests/test_typeInfr.krak +++ b/tests/test_typeInfr.krak @@ -7,11 +7,11 @@ fun retMessage(): char* { } fun id(in: T): T { return in; } -typedef CustomObj { +obj CustomObj { var data: int; } -typedef CustomObjTmplt { +obj CustomObjTmplt { var data: T; } fun inFun(in: T):T { diff --git a/tests/test_vectorTest.krak b/tests/test_vectorTest.krak index 30fe3a4..d4a5d69 100644 --- a/tests/test_vectorTest.krak +++ b/tests/test_vectorTest.krak @@ -2,7 +2,7 @@ import io:*; import mem:*; import vector:*; -typedef AbleToBeDestroyed (Destructable) { +obj AbleToBeDestroyed (Destructable) { fun destruct(): void { println("Destroyed!"); }