Matches in SemOpenAlex for { <https://semopenalex.org/work/W3100864431> ?p ?o ?g. }
Showing items 1 to 100 of
100
with 100 items per page.
- W3100864431 abstract "User-defined syntax extensions are useful to implement an embedded domain specific language (EDSL) with good code-readability. They allow EDSL authors to define domain-natural notation, which is often different from the host language syntax. Nowadays, there are several research works of powerful user-defined syntax extensions. One promising approach uses user-defined operators. A user-defined operator is a function with user-defined syntax. It can be regarded as a syntax extension implemented without macros. An advantage of user-defined operators is that an operator can be statically typed. The compiler can find type errors in the definition of an operator before the operator is used. In addition, the compiler can resolve syntactic ambiguities by using static types. However, user-defined operators are difficult to implement language constructs involving static name binding. Name binding is association between names and values (or memory locations). Our inquiry is whether we can design a system for user-defined operators involving a new custom name binding. This paper proposes a module system for user-defined operators named a dsl class. A dsl class is similar to a normal class in Java but it contains operators instead of methods. We use operators for implementing custom name binding. For example, we use a nullary operator for emulating a variable name. An instance of a dsl class, called a dsl object, reifies an environment that expresses name binding. Programmers can control a scope of instance operators by specifying where the dsl object is active. We extend the host type system so that it can express the activation of a dsl object. In our system, a bound name is propagated through a type parameter to a dsl object. This enables us to implement user-defined language constructs involving static name binding. A contribution of this paper is that we reveal we can integrate a system for managing names and their scopes with a module and type system of an object-oriented language like Java. This allows us to implement a proposed system by adopting eager disambiguation based on expected types so that the compilation time will be acceptable. Eager disambiguation, which prunes out semantically invalid abstract parsing trees (ASTs) while a parser is running, is needed because the parser may generate a huge number of potentially valid ASTs for the same source code. We have implemented ProteaJ2, which is a programming language based on Java and it supports our proposal. We describe a parsing method that adopts eager disambiguation for fast parsing and discuss its time complexity. To show the practicality of our proposal, we have conducted two micro benchmarks to see the performance of our compiler. We also show several use cases of dsl classes for demonstrating dsl classes can express various language constructs. Our ultimate goal is to let programmers add any kind of new language construct to a host language. To do this, programmers should be able to define new syntax, name binding, and type system within the host language. This paper shows programmers can define the former two: their own syntax and name binding." @default.
- W3100864431 created "2020-11-23" @default.
- W3100864431 creator A5026542200 @default.
- W3100864431 creator A5050421632 @default.
- W3100864431 date "2017-04-01" @default.
- W3100864431 modified "2023-10-17" @default.
- W3100864431 title "User-Defined Operators Including Name Binding for New Language Constructs" @default.
- W3100864431 cites W124381426 @default.
- W3100864431 cites W1497920889 @default.
- W3100864431 cites W1528098570 @default.
- W3100864431 cites W1528415032 @default.
- W3100864431 cites W1586167239 @default.
- W3100864431 cites W1660801069 @default.
- W3100864431 cites W1964494435 @default.
- W3100864431 cites W2006898115 @default.
- W3100864431 cites W2009464583 @default.
- W3100864431 cites W2013399578 @default.
- W3100864431 cites W2014021676 @default.
- W3100864431 cites W2018045485 @default.
- W3100864431 cites W2029786195 @default.
- W3100864431 cites W2051002592 @default.
- W3100864431 cites W2053634777 @default.
- W3100864431 cites W2065428406 @default.
- W3100864431 cites W2067004633 @default.
- W3100864431 cites W2078200248 @default.
- W3100864431 cites W2097071296 @default.
- W3100864431 cites W2101718506 @default.
- W3100864431 cites W2110994387 @default.
- W3100864431 cites W2500112877 @default.
- W3100864431 cites W2539141703 @default.
- W3100864431 cites W80700283 @default.
- W3100864431 doi "https://doi.org/10.22152/programming-journal.org/2017/1/15" @default.
- W3100864431 hasPublicationYear "2017" @default.
- W3100864431 type Work @default.
- W3100864431 sameAs 3100864431 @default.
- W3100864431 citedByCount "2" @default.
- W3100864431 countsByYear W31008644312019 @default.
- W3100864431 countsByYear W31008644312020 @default.
- W3100864431 crossrefType "journal-article" @default.
- W3100864431 hasAuthorship W3100864431A5026542200 @default.
- W3100864431 hasAuthorship W3100864431A5050421632 @default.
- W3100864431 hasBestOaLocation W31008644311 @default.
- W3100864431 hasConcept C104317684 @default.
- W3100864431 hasConcept C114408938 @default.
- W3100864431 hasConcept C135257023 @default.
- W3100864431 hasConcept C154945302 @default.
- W3100864431 hasConcept C158448853 @default.
- W3100864431 hasConcept C169590947 @default.
- W3100864431 hasConcept C17020691 @default.
- W3100864431 hasConcept C184337299 @default.
- W3100864431 hasConcept C185592680 @default.
- W3100864431 hasConcept C186644900 @default.
- W3100864431 hasConcept C199360897 @default.
- W3100864431 hasConcept C201374245 @default.
- W3100864431 hasConcept C2777212361 @default.
- W3100864431 hasConcept C41008148 @default.
- W3100864431 hasConcept C55493867 @default.
- W3100864431 hasConcept C58646249 @default.
- W3100864431 hasConcept C60048249 @default.
- W3100864431 hasConcept C76155785 @default.
- W3100864431 hasConcept C86339819 @default.
- W3100864431 hasConceptScore W3100864431C104317684 @default.
- W3100864431 hasConceptScore W3100864431C114408938 @default.
- W3100864431 hasConceptScore W3100864431C135257023 @default.
- W3100864431 hasConceptScore W3100864431C154945302 @default.
- W3100864431 hasConceptScore W3100864431C158448853 @default.
- W3100864431 hasConceptScore W3100864431C169590947 @default.
- W3100864431 hasConceptScore W3100864431C17020691 @default.
- W3100864431 hasConceptScore W3100864431C184337299 @default.
- W3100864431 hasConceptScore W3100864431C185592680 @default.
- W3100864431 hasConceptScore W3100864431C186644900 @default.
- W3100864431 hasConceptScore W3100864431C199360897 @default.
- W3100864431 hasConceptScore W3100864431C201374245 @default.
- W3100864431 hasConceptScore W3100864431C2777212361 @default.
- W3100864431 hasConceptScore W3100864431C41008148 @default.
- W3100864431 hasConceptScore W3100864431C55493867 @default.
- W3100864431 hasConceptScore W3100864431C58646249 @default.
- W3100864431 hasConceptScore W3100864431C60048249 @default.
- W3100864431 hasConceptScore W3100864431C76155785 @default.
- W3100864431 hasConceptScore W3100864431C86339819 @default.
- W3100864431 hasIssue "2" @default.
- W3100864431 hasLocation W31008644311 @default.
- W3100864431 hasLocation W31008644312 @default.
- W3100864431 hasOpenAccess W3100864431 @default.
- W3100864431 hasPrimaryLocation W31008644311 @default.
- W3100864431 hasRelatedWork W1590626204 @default.
- W3100864431 hasRelatedWork W1839902311 @default.
- W3100864431 hasRelatedWork W1986511474 @default.
- W3100864431 hasRelatedWork W2021785487 @default.
- W3100864431 hasRelatedWork W2140443934 @default.
- W3100864431 hasRelatedWork W2159328689 @default.
- W3100864431 hasRelatedWork W2373537637 @default.
- W3100864431 hasRelatedWork W2898474115 @default.
- W3100864431 hasRelatedWork W3006199460 @default.
- W3100864431 hasRelatedWork W4246531319 @default.
- W3100864431 hasVolume "1" @default.
- W3100864431 isParatext "false" @default.
- W3100864431 isRetracted "false" @default.
- W3100864431 magId "3100864431" @default.
- W3100864431 workType "article" @default.